import android.content.Context
import java.io.File
import java.io.FileInputStream
import java.io.FileOutputStream
import java.io.IOException
import java.text.SimpleDateFormat
import java.util.Date
import java.util.Locale

object FileUtil {

    // 创建文件夹方法
    fun createFolderInInternalStorage(context: Context, folderName: String) {
        val internalStorageDir = context.filesDir
        val newFolder = File(internalStorageDir, folderName)
        if (!newFolder.exists()) {
            val result = newFolder.mkdirs()
            if (result) {
                println("文件夹创建成功: ${newFolder.absolutePath}")
            } else {
                println("文件夹创建失败")
            }
        } else {
            println("文件夹已存在: ${newFolder.absolutePath}")
        }
    }

    // 复制文件方法
    fun copyFile(context: Context, src: String, destDirPath: String, destFileName: String) {
        val srcFile = File(src)
        val destDir = File(context.filesDir, destDirPath)

        // 检查目标文件夹是否存在，不存在则创建
        if (!destDir.exists()) {
            destDir.mkdirs()
        }

        val destFile = File(destDir, destFileName)

        try {
            FileInputStream(srcFile).use { input ->
                FileOutputStream(destFile).use { output ->
                    val buffer = ByteArray(1024)
                    var length: Int
                    while (input.read(buffer).also { length = it } > 0) {
                        output.write(buffer, 0, length)
                    }
                }
            }
            println("文件复制成功")
        } catch (e: IOException) {
            e.printStackTrace()
            println("文件复制失败")
        }
    }

    // 获取指定文件夹下的所有文件
    fun listFilesInFolder(context: Context, folderName: String): List<File> {
        val folder = File(context.filesDir, folderName)
        return if (folder.exists() && folder.isDirectory) {
            folder.listFiles()?.toList() ?: emptyList()
        } else {
            emptyList()
        }
    }

    // 获取子目录中的子目录下的文件列表
    fun listFilesInSubfolder(context: Context, parentFolderPath: String, subFolderName: String): List<File> {
        val subFolder = File(context.filesDir, "$parentFolderPath/$subFolderName")
        return if (subFolder.exists() && subFolder.isDirectory) {
            subFolder.listFiles()?.toList() ?: emptyList()
        } else {
            emptyList()
        }
    }

    // 格式化文件的最后修改时间
    fun formatFileLastModified(file: File, pattern: String = "yyyy-MM-dd HH:mm:ss"): String {
        val sdf = SimpleDateFormat(pattern, Locale.getDefault())
        return sdf.format(Date(file.lastModified()))
    }
}
